package cn.iocoder.yudao.module.promotion.groupon.pojo.po;

import cn.iocoder.yudao.framework.business.basic.pojo.bo.TemplateParameter;
import cn.iocoder.yudao.framework.business.basic.pojo.po.MerchantScopeEntity;
import cn.iocoder.yudao.framework.mybatis.core.type.StringListTypeHandler;
import cn.iocoder.yudao.module.api.shop.category.eums.ShopCategoryCodeEnum;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.util.List;

/**
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 *  团购套餐
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 山野羡民（1032694760@qq.com）
 * @since 2025/01/13
 */
@TableName(value = "promotion_groupon_package", autoResultMap = true)
//@KeySequence("promotion_groupon_package_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
public class GrouponPackage extends MerchantScopeEntity {

    /**
     * 类型，从主营类目编码得来，如：food-餐饮美食
     *
     * @see ShopCategoryCodeEnum
     */
    private String type;

    /**
     * 名称
     */
    private String name;

    /**
     * 图集
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> picUrls;

    /**
     * 最少适用人数
     */
    private Integer minPeople;

    /**
     * 最多适用人数
     */
    private Integer maxPeople;

    /**
     * 成本价，单位为分，自动从团购产品累加得来
     */
    private Integer costPrice;

    /**
     * 销售价，单位为分，自动从团购产品累加得来
     */
    private Integer price;

    /**
     * 会员价，单位为分，自动从团购产品累加得来
     */
    private Integer vipPrice;

    /**
     * 原价，单位为分，自动从团购产品累加得来
     */
    private Integer originPrice;

    /**
     * 总销量
     */
    private Integer salesCount;

    /**
     * 购买须知，JSON格式
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<TemplateParameter> guidance;
    /**
     * 购买须知，格式化给前端展示
     */
    @TableField(exist = false)
    private List<String> guidanceFormat;

    @SuppressWarnings("unused")
    public List<String> getGuidanceFormat() {
        return TemplateParameter.formatValues(getGuidance());
    }

    /**
     * 赠品活动编号集，建议最多关联3个
     */
    @TableField(typeHandler = StringListTypeHandler.class)
    private List<Long> giftActivityIds;

    /**
     * 开关
     */
    private Boolean enabled;

}
